import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.TreeSet;

public class VentanaExamen extends JFrame
{

	JPanel panelSuperior;
	JPanel panelInferior;
	JPanel panelCentral;
	JPanel panelBotoneraCentral;
	JPanel panelListas;
	JPanel panelEtiquetas;
	JScrollPane scrollListaSuplentes;
	JScrollPane scrollListaTitulares;
	JList listaSuplentes;
	JList listaTitulares;
	JButton botonPoner;
	JButton botonQuitar;
	JButton botonIniciarPartido;
	JButton botonSuplentes;
	JButton botonSalir;
	DefaultListModel ltit;
	DefaultListModel lsup;

	public VentanaExamen()
	{
		this.setTitle("Eurobasket");

		panelSuperior = new JPanel();
		panelInferior = new JPanel();
		panelCentral = new JPanel();
		panelBotoneraCentral = new JPanel();
		panelListas= new JPanel();
		panelEtiquetas= new JPanel();

		panelEtiquetas.setLayout(new BorderLayout());
		panelEtiquetas.add(new JLabel("Suplentes"),"West");
		panelEtiquetas.add(new JLabel("Titulares"),"East");

		panelListas.setLayout(new GridLayout(1,3));
		
		ltit = new DefaultListModel();
		lsup = new DefaultListModel();
		listaSuplentes = new JList(lsup);
		listaTitulares = new JList(ltit);
		cargarPlantilla();
		
		scrollListaSuplentes = new JScrollPane(listaSuplentes);
		scrollListaTitulares = new JScrollPane(listaTitulares);
		panelListas.add(scrollListaSuplentes);
		panelListas.add(panelBotoneraCentral);
		panelListas.add(scrollListaTitulares);

		panelBotoneraCentral.setLayout(new BorderLayout());
		botonPoner = new JButton (">");
		botonPoner.addActionListener(new ActionListener (){
			public void actionPerformed (ActionEvent e){
				pasaJugador(listaSuplentes,listaTitulares,1);
			}
			
		});
		botonQuitar = new JButton ("<");
		botonQuitar.addActionListener(new ActionListener (){
		public void actionPerformed (ActionEvent e){
			pasaJugador(listaSuplentes,listaTitulares,2);
		}
		
		});
		panelBotoneraCentral.add(botonPoner,"North");
		panelBotoneraCentral.add(botonQuitar,"South");

		panelCentral.setLayout(new BorderLayout());
		panelCentral.add(panelEtiquetas,"North");
		panelCentral.add(panelListas,"Center");

		botonIniciarPartido = new JButton("Iniciar Partido");
		botonIniciarPartido.addActionListener(new ActionListener (){
			public void actionPerformed (ActionEvent e){
				try {
				iniciarPartido();
				} catch (EquipoIncorrectoException e1) {
				System.out.println("Error");
				}
				}
			});
		botonSuplentes = new JButton("Suplentes?");
		botonSuplentes.addActionListener(new ActionListener(){
		public void actionPerformed (ActionEvent e){
			ordenarSuplentes();
		}
		
		});
		botonSalir = new JButton("Salir");
		botonSalir.addActionListener(new ActionListener (){
			public void actionPerformed (ActionEvent e){
				System.exit(0);
			}
			
			});
		this.getContentPane().setLayout(new BorderLayout());
		this.getContentPane().add(panelSuperior,"North");
		this.getContentPane().add(panelCentral,"Center");
		this.getContentPane().add(panelInferior,"South");

		panelSuperior.add(new JLabel("ELIGE EL QUINTETO INICIAL"));

		panelInferior.add(botonIniciarPartido);
		panelInferior.add(botonSuplentes);
		panelInferior.add(botonSalir);

		this.setSize(350,350);
		this.setResizable(false);
		this.setVisible(true);
	}

	public void cargarPlantilla()
	{
		lsup.addElement("xabi");
		lsup.addElement("xabi2");
		lsup.addElement("xabi3");
		lsup.addElement("xabi4");
		lsup.addElement("xabi5");
		lsup.addElement("xabi6");
		lsup.addElement("xabi7");
		lsup.addElement("xabi8");
		lsup.addElement("xabi9");
		lsup.addElement("xabi10");
		lsup.addElement("xabi11");
		lsup.addElement("xabi12");
	}

	public void iniciarPartido() throws EquipoIncorrectoException
	{
		if(ltit.size()!=5)
			throw new EquipoIncorrectoException ();

		System.out.println("El equipo esta jugando. Estan jugando estos jugadores: ");
		for(int i=0; i<ltit.size();i++){
			System.out.println(""+ltit.getElementAt(i));
		}
	}

	public void pasaJugador(JList origen, JList destino, int n)
	{
		if (n==1){
			ltit.addElement(origen.getSelectedValue());
			lsup.removeElement(origen.getSelectedValue());
			
	}
		if(n==2){
			lsup.addElement(destino.getSelectedValue());
			ltit.removeElement(destino.getSelectedValue());
			
		}
	}

	public void ordenarSuplentes()
	{
		TreeSet ordenado = new TreeSet();
		for(int i=0; i<lsup.size(); i++){
			ordenado.add(lsup.getElementAt(i));
		}
		do{
			System.out.println(ordenado.first());
			ordenado.remove(ordenado.first());
		}while(0<ordenado.size());
	}

	public static void main(String[] args)
	{
		new VentanaExamen();
	}

}
